/*
 * Wazuh report dispatcher mock
 * Copyright (C) 2015, Wazuh Inc.
 * December 3, 2024.
 *
 * This program is free software; you can redistribute it
 * and/or modify it under the terms of the GNU General Public
 * License (version 2) as published by the FSF - Free Software
 * Foundation.
 */
#ifndef _MOCK_SCAN_CONTEXT_HPP
#define _MOCK_SCAN_CONTEXT_HPP

#include "scanContext.hpp"
#include "gmock/gmock.h"
#include "gtest/gtest.h"

/**
 * @class MockScanContext
 *
 * @brief Mock class for simulating a scan context object.
 *
 */
class MockScanContext
{
public:
    /**
     * @brief Mock Constructor
     *
     * @note This method is intended for testing purposes and does not perform any real action.
     */
    MockScanContext() = default;

    /**
     * @brief Mock Destructor
     *
     */
    virtual ~MockScanContext() = default;

    /**
     * @brief Mock method for agentId.
     *
     * @note This method is intended for testing purposes and does not perform any real action.
     */
    MOCK_METHOD(std::string, agentId, (), ());

    /**
     * @brief Mock method for clusterStatus.
     *
     * @note This method is intended for testing purposes and does not perform any real action.
     */
    MOCK_METHOD(bool, clusterStatus, (), ());

    /**
     * @brief Mock method for clusterNodeName.
     *
     * @note This method is intended for testing purposes and does not perform any real action.
     */
    MOCK_METHOD(std::string, clusterNodeName, (), ());

    std::vector<AgentData> m_agents; ///< Agent data list.
};

#endif // _MOCK_SCAN_CONTEXT_HPP
